package variable

import (
	"log"
	"os"
	"strings"
	"sync"

	"frame/global/consts"
	"frame/pkg/utils/yml_config/ymlconfig_interf"
	"go.uber.org/zap"
	"gorm.io/gorm"

	"github.com/panjf2000/ants/v2"
)

var (
	BasePath string   //项目根目录路径
	sMap     sync.Map // 全局kv缓存

	ConfigKeyPrefix = "Config_" //  配置文件键值缓存时，键的前缀

	// ZapLog 全局日志指针
	ZapLog *zap.Logger

	// ConfigYml 全局配置文件
	ConfigYml     ymlconfig_interf.YmlConfigInterf // 全局配置文件指针
	ConfigGormYml ymlconfig_interf.YmlConfigInterf // 全局配置文件指针
	GormDbMysql   *gorm.DB                         // 全局gorm的客户端连接

	AntsPool *ants.Pool

	DateFormat = "2006-01-02 15:04:05" //  设置全局日期时间格式
)

func init() {
	// 1.初始化程序根目录
	if curPath, err := os.Getwd(); err == nil {
		if len(os.Args) > 1 && strings.HasPrefix(os.Args[1], "-test") {
			BasePath = strings.Replace(strings.Replace(curPath, `\test`, "", 1), `/test`, "", 1)
		} else {
			BasePath = curPath
		}
	} else {
		log.Fatal(consts.ErrorsBasePath)
	}
}
